home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / msqc25t1 / hexcal.c < prev    next >
C/C++ Source or Header  |  1990-02-23  |  1KB  |  53 lines

  1. /* hexcal.c     by Tom Harrold          feb., 24, 1990
  2.  
  3.         This is a hexadecimal calculator program that uses strtoul
  4.     to read hexadecimal values from the command-line arguments.
  5.     It's designed to be invoked with the command line;
  6.     hexcal operand_1 operation operand_2, where hexcal is the name
  7.     of the program, operation is one of +,-,*, or /, and the
  8.     operand_1 and operand_2 are the hexadecimal oprands.
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13.  
  14. static char command[80] = " ";
  15.  
  16. main(int argc, char **argv)
  17. {
  18.     unsigned long op1, op2;
  19.     if(argc < 4)
  20.         {
  21.         printf("Usage: %s <operand1> <operation> <operand2>\n", argv[0]);
  22.         }
  23.     op1 = strtoul(argv[1], (char **)NULL, 16);
  24.     op2 = strtoul(argv[3], (char **)NULL, 16);
  25.  
  26.     switch (argv[2][0])
  27.         {
  28.         case '+':
  29.             printf("%lX (hex)  ", op1 + op2);
  30.             printf("% 10.0lu  (dec)\n", op1 + op2);
  31.             break;
  32.         case '-':
  33.             printf("%lX (hex)  ", op1 - op2);
  34.             printf("% 10.0lu (dec)\n", op1 - op2);
  35.             break;
  36.         case '*':
  37.             printf("%lX (hex)  ", op1 * op2);
  38.             printf("% 10.0lu (dec)\n", op1 * op2);
  39.             break;
  40.         case '/':
  41.             if(op2 == 0L)
  42.                 {
  43.                 printf("Can't divide by zero!\n");
  44.                 }
  45.                 else
  46.                     printf("%lX (hex)  ", op1 / op2);
  47.                     printf("% 10.0lu (dec)\n", op1 / op2);
  48.                 break;
  49.         }
  50. }
  51.  
  52.  
  53.